﻿#pragma once
#ifndef Curve_hpp
#define Curve_hpp

#include<vector>
#include"../../TesMath/TesVector3.h"
#include"../../TesMath/TesInterpolation.h"
#include"./Fragment.hpp"


namespace MMF { namespace BSpline {

    struct Curve: public TesInterpolation
    {
        std::vector<Fragment> mFragments;       ///< 子线段
        size_t mFindIdx;                        ///< 记录下一次查找的子线段的下标
        float mLastPos;                         ///< 上一次取点的坐标

        Curve();

        //设置控制点
        void SetControlPoints(const std::vector<TesVector3>& points);

        //曲线上获取一个点
        TesVector3 GetPoint(float distance);

        //获取当前点的所以呢
        size_t FindIdx();

        //曲线结束了
        bool IsEnd();

        //总长度
        float Length();

        //重置
        void Reset();
    };
}}


#endif